#define _CRT_SECURE_NO_WARNINGS 1

#include"Slist.h"

void TestSList1()
{
	SListNode* phead = NULL;
	SListPushBack(&phead, 1);
	SListPushBack(&phead, 2);
	SListPushBack(&phead, 3);
	SListPushBack(&phead, 4);
	SListPushBack(&phead, 5);
	SListPrint(phead);

	SListPushFront(&phead, 6);
	SListPushFront(&phead, 7);
	SListPushFront(&phead, 8);
	SListPushFront(&phead, 9);
	SListPushFront(&phead, 10);
	SListPrint(phead);

	SListPopBack(&phead);
	SListPopBack(&phead);
	SListPopBack(&phead);
	SListPopBack(&phead);
	SListPrint(phead);
	SListPopBack(&phead);
	SListPrint(phead);

	

}
void TestSList2()
{
	SListNode* phead = NULL;
	SListPushBack(&phead, 1);
	SListPushBack(&phead, 2);
	SListPushBack(&phead, 3);
	SListPushBack(&phead, 4);
	SListPushBack(&phead, 5);
	SListPrint(phead);

	SListPopFront(&phead);
	SListPopFront(&phead);
	SListPopFront(&phead);
	SListPopFront(&phead);
	SListPrint(phead);
	SListPopFront(&phead);
	SListPrint(phead);
}
void TestSList3()
{
	SListNode* phead = NULL;
	SListPushBack(&phead, 1);
	SListPushBack(&phead, 2);
	SListPushBack(&phead, 3);
	SListPushBack(&phead, 4);
	SListPushBack(&phead, 5);
	SListPrint(phead);

	SListNode* pos = SListFind(phead, 3);
	pos->data = 100;
	SListPrint(phead);
	SListInsertAfter(pos, 200);
	SListInsertAfter(pos, 300);
	SListInsertAfter(pos, 400);
	SListInsertAfter(pos, 500);
	SListPrint(phead);

	SListNode* pos2 = SListFind(phead, 1);
	SListInsertPrev(&phead, pos2, 101);
	SListInsertPrev(&phead, pos2, 102);
	SListInsertPrev(&phead, pos2, 103);
	SListInsertPrev(&phead, pos2, 104);
	SListPrint(phead);

	SListEraseAfter(pos2);
	SListEraseAfter(pos2);
	SListEraseAfter(pos2);
	SListPrint(phead);
	

}


void TestSList4()
{
	SListNode* phead = NULL;
	SListPushBack(&phead, 1);
	SListPushBack(&phead, 2);
	SListPushBack(&phead, 3);
	SListPushBack(&phead, 4);
	SListPushBack(&phead, 5);
	SListPrint(phead);

	SListNode* pos = SListFind(phead, 5);

	SListErasePrev(&phead, pos);
	SListPrint(phead);
	SListErasePrev(&phead, pos);
	SListPrint(phead);


	SListErase(&phead, pos);
	SListPrint(phead);

	SListDestroy(&phead);
}

int main()
{
	//TestSList1();
	//TestSList2();
	//TestSList3();
	TestSList4();
	return 0;
}